package com.example.springbootmqdemocustumer.service.topic;

import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Service;

/**
 * Classname: FanoutEmallConsumer
 * Description:
 *
 * @Author: Jam
 * @Create 2022/11/28 - 19:40
 * @Version 1.0
 */
@Service
@RabbitListener(bindings =@QueueBinding(
        // email.topic.queue 是队列名字，这个名字你可以自定随便定义。
        value = @Queue(value = "email.topic.queue",durable = "false",autoDelete = "false"),
        //durable‌：是否持久化，持久化的队列在服务器重启后依然存在。
        // exclusive‌：是否独享，设置为true时，队列只能被创建它的连接使用。
        //autoDelete‌：是否自动删除，设置为true时，当最后一个消费者取消订阅后，队列将被删除。
        //arguments‌：队列的其他属性参数，如消息的过期时间、队列最大长度等
        // topic_order_exchange 交换机的名字 必须和生产者保持一致  type: rabbitmq模式是：fanout 是以广播模式 、发布订阅模式 此处为topic
        exchange = @Exchange(value = "topic_order_exchange",type = ExchangeTypes.TOPIC),
        // 这里是确定的路由key  # 0个 1个或多个 ，* 至少有一个 不能一个都没有
        key = "*.emall.#"
))

//@RabbitListener(bindings = @QueueBinding(
//        value = @Queue("topicQueue1"),
//        exchange = @Exchange(value = "test.topic",type = ExchangeTypes.TOPIC),
//        key = "China.#"
//))


public class TopicEmallConsumer {
    @RabbitHandler
    public void messagerevice(String message){
        // 此处省略发邮件的逻辑
        System.out.println("email- topic 收到了消息：------------->" + message);
    }
}
